package com.zkh.myframe.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import com.zkh.myframe.aspect.AspectSuper;

/**
 * 设置自定义切面，标记在类上。多个切面重复使用该注解即可。
 * @author zkh
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(Aspect.List.class)
public @interface Aspect {

	/**
	 * 切面作用的方法，正则表达式，默认为.+，即代理所有方法（只包含当前类存在的方法）
	 * @return
	 */
	String pattern() default ".+";
	
	/**
	 * 要执行的切面的class属性
	 * @return
	 */
	Class<? extends AspectSuper> aspect();
	
	@Target(ElementType.TYPE)
	@Retention(RetentionPolicy.RUNTIME)
	@interface List{
		Aspect[] value();
	}
}
